#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

// 定义链表的结构 -- 节点的结构

typedef int SLTDataType ;

typedef struct SListNode
{

    SLTDataType data ; // 存储的数据

    struct SListNode* next ; // 指向下一个节点

} SLTNode ;

// 链表的查找

SLTNode* SLTFind (SLTNode* phead , SLTDataType x) ;

// 链表的打印

void SLTPrint (SLTNode* phead) ;

// 链表的尾插

void SLTPushBack (SLTNode** pphead , SLTDataType) ;

// 链表的尾删

void SLTPopBack (SLTNode** pphead) ;

// 链表的头插

void SLTPushFront (SLTNode** pphead , SLTDataType x) ;

// 链表的头删

void SLTPopFront (SLTNode** pphead) ;

// 在指定链表位置之前插入数据

void SLTInsert (SLTNode** pphead , SLTNode* pos , SLTDataType x) ;

// 在指定链表位置之后插入数据

void SLTInsertAfter (SLTNode* pos , SLTDataType x) ;

// 删除pos节点

void SLTErase (SLTNode** pphead , SLTNode* pos) ;

// 删除pos之后的节点

void SLTEraseAfter (SLTNode* pos) ;

// 销毁链表

void SLTDestory (SLTNode** pphead) ;